2023/05/23 更新: 為了避免本文章散落在不同網站,之後統一由部落格更新,再麻煩從部落格查看~
本文章同時發佈於:
文章為自己的經驗與夥伴整理的內容,設計沒有標準答案,如有可以改進的地方,請告訴我,我會盡我所能的修改,謝謝大家~
大家好,在前面 15 天講解完應用層
相關的微服務後,現在終於要來介紹平台層
!
而Kubernetes(K8s)即是這次主角,他到底跟 Docker 是什麼樣的關係?你的後端需要他嗎?
我會以一個工程師,從純Docker後端慢慢到發現需要K8s哪些好用的功能
,來說明 K8s 解決的問題。
當後端容器越來越多,就會需要可以管理大量容器的方案
一開始使用 Docker 時,後端的容器不多,可以單純使用 docker-compose 即可解決多個容器互動的需求,但在容器越來越多時,會產生以下問題:
關於這些問題,我曾經寫過腳本來維護,但當服務越來越大,腳本的需求就越來越多,需要非常多成本。而 K8s 提供了像以下config
的 yaml 形式來控制以上問題,讓一切架構以config
來設計並非自己造輪子寫腳本來維護
apiVersion: v1
kind: Pod
metadata:
name: site
labels:
app: web
spec:
containers:
- name: front-end
image: nginx
ports:
- containerPort: 80
圖片來源: Project Management & Technology Fusion: Using Kubernetes (K8S) to manage Container cluster (Docker)
K8s 會先啟動一個 Master node,底下會有許多的 Worker Node,而 Worker node 裡頭會有許多的容器,K8s 主要的目標就是管理這些容器。
K8s 主要就是把多台機器加以抽象,使他們就像一台大機器工你操作。
而 K8s 一開始的目標是管理容器,而不管理運行容器的 VM,不過後來有新增Cluster Autoscaler(CA)
方案來管理 VM,但你使用的平台必須要有支援。
K8s 有提供三種方法來管理容器對流量的需求